<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

<script>
// number类型
// 在js中 整数、浮点数、正数、负数、非数字值 都是number类型
var num1 = 123;// 整数、正数
var num2 = 123.456;// 浮点数、正数
var num3 = -123;// 负数
console.log( typeof num1 );// 'number'
console.log( typeof num2 );// 'number'
console.log( typeof num3 );// 'number'

// number类型中有一个特殊值叫 NaN 
// NaN -> Not a Number 非数字值
// 当预期一个数学计算返回一个计算结果，没办法正常返回计算结果时，返回NaN这个值
// NaN表示错误的计算结果
console.log( typeof NaN );// 'number'

var res1 = 5-'a';
var res2 = 'b'-2;
console.log( res1 );// NaN
console.log( res2 );// NaN
console.log( res1 == res2 );// false

// NaN有两个特征：
    // 1.NaN与任何值都不相等，包括它自己
    console.log( NaN == NaN );// false
    // 2.任何值与NaN进行计算，最后的结果都是NaN 
    console.log( res1-2 );// NaN
    console.log( res2+2 );// NaN

// 如何判断一个值是否为 NaN ？
// ECMA提供了一个方法用于判断是否为 NaN :
// isNaN(val) 用于判断val是否为NaN
console.log( isNaN(res1) );// true
console.log( isNaN(res2) );// true
console.log( isNaN(123) );// false
console.log( isNaN('123') );// false
console.log( isNaN('123a') );// true  ?

// isNaN()方法执行时，会使用Number()方法将传入的数据转换成数字
console.log( Number('123a') );// NaN
console.log( isNaN(Number('123a')) );// true

</script>
</body>
</html>